//
// Created by 11510 on 2024/7/16.
//

#ifndef DAY77_TICTACTOE_MAINWINDOW_H
#define DAY77_TICTACTOE_MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QVector>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow {
Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);

    ~MainWindow() override;


private slots:
    void handleButtonClick();
    void handleUndo();
    void handleRestart();

private:
    Ui::MainWindow *ui;


    /**
     * 简要思路：
     * buttons存放所有btn的指针，根据发送信号的按键对应的下标将board中的值设置为当前玩家
     * board中初始化为0，存放当前玩家的值，每走一步后需要判断输赢
     */
    QVector<QPushButton*> buttons;
    QVector<int> board;
    QVector<int> moveHistory;
    int currentPlayer;

    void checkWin();
    void updateBoard();/* 一次根据board中的值更新所有btn */
};


#endif //DAY77_TICTACTOE_MAINWINDOW_H
